home *** CD-ROM | disk | FTP | other *** search
- #!/bin/bash
- # sh is buggy on RS/6000 AIX 3.2. Replace above line with #!/bin/ksh
-
- # Copyright (C) 1998, 2002, 2006, 2007 Free Software Foundation
- # Copyright (C) 1993 Jean-loup Gailly
-
- # This program is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 2 of the License, or
- # (at your option) any later version.
-
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
-
- # You should have received a copy of the GNU General Public License along
- # with this program; if not, write to the Free Software Foundation, Inc.,
- # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- PATH=${GZIP_BINDIR-'/bin'}:$PATH
-
- case $1 in
- --__cmp) shift
- prog=cmp; cmp='${CMP-cmp}' ;;
- *) prog=diff; cmp='${DIFF-diff}';;
- esac
-
- version="z$prog (gzip) 1.3.12
- Copyright (C) 2007 Free Software Foundation, Inc.
- This is free software. You may redistribute copies of it under the terms of
- the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
- There is NO WARRANTY, to the extent permitted by law.
-
- Written by Jean-loup Gailly."
-
- usage="Usage: $0 [OPTION]... FILE1 [FILE2]
- Compare FILE1 to FILE2, using their uncompressed contents if they are
- compressed. If FILE2 is omitted, compare FILE1 to the uncompressed
- contents of FILE1.gz. Do comparisons like '$prog' does.
-
- OPTIONs are the same as for '$prog'.
-
- Report bugs to <bug-gzip@gnu.org>."
-
- # sed script to escape all ' for the shell, and then (to handle trailing
- # newlines correctly) turn trailing X on last line into '.
- escape='
- s/'\''/'\''\\'\'''\''/g
- $s/X$/'\''/
- '
-
- while :; do
- case $1 in
- --h*) printf '%s\n' "$usage" || exit 2; exit;;
- --v*) echo "$version" || exit 2; exit;;
- --) shift; break;;
- -*\'*) cmp="$cmp '"`printf '%sX\n' "$1" | sed "$escape"`;;
- -?*) cmp="$cmp '$1'";;
- *) break;;
- esac
- shift
- done
- cmp="$cmp --"
-
- for file
- do
- test "X$file" = X- || <"$file" || exit 2
- done
-
- gzip_status=0
- exec 3>&1
-
- if test $# -eq 1; then
- case $1 in
- *[-.]gz* | *[-.][zZ] | *.t[ga]z)
- FILE=`expr "X$1" : 'X\(.*\)[-.][zZtga]*$'`
- gzip_status=$(
- exec 4>&1
- (gzip -cd -- "$1" 4>&-; echo $? >&4) 3>&- | eval "$cmp" - '"$FILE"' >&3
- );;
- *)
- echo >&2 "$0: $1: unknown compressed file extension"
- exit 2;;
- esac
- elif test $# -eq 2; then
- case "$1" in
- *[-.]gz* | *[-.][zZ] | *.t[ga]z | -)
- case "$2" in
- *[-.]gz* | *[-.][zZ] | *.t[ga]z | -)
- if test "$1$2" = --; then
- gzip_status=$(
- exec 4>&1
- (gzip -cdfq - 4>&-; echo $? >&4) 3>&- |
- eval "$cmp" - - >&3
- )
- elif
- # Reject Solaris 8's buggy /bin/bash 2.03.
- echo X |
- (echo X | eval "$cmp" /dev/fd/5 - >/dev/null 2>&1) \
- 5<&0
- then
- gzip_status=$(
- exec 4>&1
- (gzip -cdfq -- "$1" 4>&-; echo $? >&4) 3>&- |
- ( (gzip -cdfq -- "$2" 4>&-; echo $? >&4) 3>&- 5<&- </dev/null |
- eval "$cmp" /dev/fd/5 - >&3) 5<&0
- )
- case $gzip_status in
- *[1-9]*) gzip_status=1;;
- *) gzip_status=0;;
- esac
- else
- F=`expr "/$2" : '.*/\(.*\)[-.][zZtga]*$'` || F=$prog
- tmp=
- trap '
- test -n "$tmp" && rm -f "$tmp"
- (exit 2); exit 2
- ' HUP INT PIPE TERM 0
- if type mktemp >/dev/null 2>&1; then
- tmp=`mktemp -t -- "$F.XXXXXX"` || exit 2
- else
- set -C
- tmp=${TMPDIR-/tmp}/$F.$$
- fi
- gzip -cdfq -- "$2" > "$tmp" || exit 2
- gzip_status=$(
- exec 4>&1
- (gzip -cdfq -- "$1" 4>&-; echo $? >&4) 3>&- |
- eval "$cmp" - '"$tmp"' >&3
- )
- cmp_status=$?
- rm -f "$tmp" || gzip_status=$?
- trap - HUP INT PIPE TERM 0
- (exit $cmp_status)
- fi;;
- *)
- gzip_status=$(
- exec 4>&1
- (gzip -cdfq -- "$1" 4>&-; echo $? >&4) 3>&- |
- eval "$cmp" - '"$2"' >&3
- );;
- esac;;
- *) case "$2" in
- *[-.]gz* | *[-.][zZ] | *.t[ga]z | -)
- gzip_status=$(
- exec 4>&1
- (gzip -cdfq -- "$2" 4>&-; echo $? >&4) 3>&- |
- eval "$cmp" '"$1"' - >&3
- );;
- *) eval "$cmp" '"$1"' '"$2"';;
- esac;;
- esac
- else
- echo >&2 "$0: invalid number of operands; try \`$0 --help' for help"
- exit 2
- fi
-
- cmp_status=$?
- test "$gzip_status" -eq 0 || exit 2
- exit $cmp_status
-